package com.turing.post.cardmanagement.util;

import java.math.BigInteger;
import java.util.Date;
import java.util.List;

import javax.ejb.Local;
import javax.ejb.Remote;

import com.turing.post.util.PCPSApplicationException;

@Remote
@Local
public interface MakeCardApprovalDao {

	/**
	 * 插入申请制卡记录
	 * 
	 * @param MakeCardApproval对象
	 * @throws PCPSApplicationException
	 */
	public void insertMakeCardApproval(MakeCardApproval mca)
			throws PCPSApplicationException;

	/**
	 * 修改申请制卡记录
	 * 
	 * @param MakeCardApproval对象
	 * @throws PCPSApplicationException
	 */
	public void updateMakeCardApproval(MakeCardApproval mca)
			throws PCPSApplicationException;

	/**
	 * 根据主键检 待索审批表对象
	 * 
	 * @param MakeCardApplyForId
	 * @return MakeCardApproval对象
	 */
	public MakeCardApproval getMakeCardApprovalByMakeCardApplyForId(
			BigInteger MakeCardApplyForId);

	/**
	 * 根据发卡商机构编号 检索 待索审批表对象
	 * 
	 * @param IssueBranchNo
	 *            机构编号
	 * @return MakeCardApproval集合
	 */
	public List<MakeCardApproval> getMakeCardApprovalByIssueBranchNo(
			String IssueBranchNo);

	/**
	 * 根据操作员编号 状态 检索待索审批表对象
	 * 
	 * @param OperNo
	 *            操作员编号
	 * @return MakeCardApproval集合
	 */
	public List<MakeCardApproval> getMakeCardApprovalByOperNo(BigInteger OperNo);

	/**
	 * 根据发卡商机构编号 状态 检索 待索审批表对象
	 * 
	 * @param IssueBranchNo
	 *            机构编号
	 * @param Status
	 *            状态
	 */
	public List<MakeCardApproval> getMakeCardApprovalByIssueBranchNoAndStatus(
			String IssueBranchNo, String Status);

	/**
	 * 根据操作员编号 状态 检索待索审批表对象
	 * 
	 * @param OperNo
	 *            操作员编号
	 * @param Status
	 *            状态
	 * @return MakeCardApproval集合
	 */
	public List<MakeCardApproval> getMakeCardApprovalByOperNoAndStatus(
			BigInteger OperNo, String Status);

	/**
	 * 根据操作员机构号 检索全部下级待索审批表对象
	 * 
	 * @param OperNo
	 *            操作员编号
	 * @param Status
	 *            状态
	 * @return MakeCardApproval集合
	 */
	// public List<MakeCardApproval> getAllMakeCardApprovalByIssueBranchNo(
	// String IssueBranchNo);
	/**
	 * 根据发卡商机构编号 状态 检索 全部下级待索审批表对象
	 * 
	 * @param IssueBranchNo
	 *            机构编号
	 * @param Status
	 *            状态
	 * @return MakeCardApproval集合
	 */
	public List<MakeCardApproval> getAllMakeCardApprovalByIssueBranchNoAndStatus(
			String IssueBranchNo, String Status);

	/**
	 * 根据审批操作员号码取得该操作员审批的制卡申请
	 * 
	 * @param AuthOperNo审批人
	 * @return MakeCardApproval集合
	 */
	public List<MakeCardApproval> getMakeCardApprovalByAuthOperNo(
			BigInteger AuthOperNo);

	/**
	 * 根据拒绝操作员号码取得该操作员拒绝的制卡申请
	 * 
	 * @param RejectedOperNo拒绝人
	 * @return MakeCardApproval集合
	 */
	public List<MakeCardApproval> getMakeCardApprovalByRejectedOperNo(
			BigInteger RejectedOperNo);

	/**
	 * 记录锁定,准备更新
	 * 
	 * @param MakeCardApplyForId
	 *            申请ID
	 * @return MakeCardApproval 对象
	 */
	public MakeCardApproval getMakeCardApprovalByMakeCardApplyForIdForUpdate(
			BigInteger MakeCardApplyForId);

	/**
	 * 根据登录发卡商,是否全局，时间段，制卡商ID,卡种类ID,卡片面值,状态 组合条件分页查询数据.
	 * 
	 * @param issuecompanyno
	 *            发卡商ID
	 * @param flag
	 *            是否全局，-1查询全局，1查询本机构
	 * @param issuebranchno
	 *            发卡商机构编号
	 * @param starttime
	 *            开始时间 1900-01-01 查全部
	 * @param endtime
	 *            结束时间 1900-01-01 查全部
	 * @param cardManufactureId
	 *            制卡商ID-1 查全部
	 * @param status
	 *            状态-1查全部
	 * @param page
	 *            页码 -1查全部
	 * @return MakeCardApproval对象集合
	 */
	public List<MakeCardApproval> getMakeCardApprovalByConditions(
			String issuecompanyno, Integer flag, String issuebranchno,
			Date starttime, Date endtime, BigInteger cardManufactureId,
			BigInteger cardFaceId, String status, Integer page);

	/**
	 * 根据登录用户ID,制卡商ID,卡种类ID,卡片面值,状态 查询总数
	 * 
	 * @param issuecompanyno
	 *            发卡商ID
	 * @param flag
	 *            是否全局，-1查询全局，1查询本机构
	 * @param issuebranchno
	 *            发卡商机构编号
	 * @param starttime
	 *            开始时间 1900-01-01 查全部
	 * @param endtime
	 *            结束时间 1900-01-01 查全部
	 * @param cardManufactureId
	 *            制卡商ID-1 查全部
	 * @param status
	 *            状态-1查全部
	 * @return 数据条数
	 */
	public Integer getMakeCardApprovalTotalByConditions(String issuecompanyno,
			Integer flag, String issuebranchno, Date starttime, Date endtime,
			BigInteger cardManufactureId, BigInteger cardFaceId, String status);

	/**
	 * 根据登录用户ID,发卡商机构,卡种类ID,卡片面值,状态 组合条件分页查询数据.
	 * 
	 * @param OperNo
	 *            登录用户ID
	 * @param IssueBranchNo
	 *            发卡商机构
	 * @param cardManufactureId
	 *            制卡商ID
	 * @param cardClassicId
	 *            卡种类ID
	 * @param cardParValueId
	 *            卡片面值
	 * @param status
	 *            状态
	 * @param page
	 *            页码
	 * @return MakeCardApproval对象集合
	 */
	public List<MakeCardApproval> getApprovalMakeCardByConditions(
			BigInteger OperNo, String IssueBranchNo,
			BigInteger cardManufactureId, BigInteger cardFaceId, String status,
			Integer page);

	/**
	 * 根据登录用户ID,发卡商机构,卡种类ID,卡片面值,状态 查询总数
	 * 
	 * @param OperNo
	 *            登录用户ID
	 * @param IssueBranchNo
	 *            发卡商机构
	 * @param cardManufactureId
	 *            制卡商ID
	 * @param cardClassicId
	 *            卡种类ID
	 * @param cardParValueId
	 *            卡片面值
	 * @param status
	 *            状态
	 * @return 记录条数
	 */
	public Integer getApprovalMakeCardTotalByConditions(BigInteger OperNo,
			String IssueBranchNo, BigInteger cardManufactureId,
			BigInteger cardFaceId, String status);
	/**
	 * 根据申请单号删除制卡申请单
	 * 
	 * @param webInput
	 * @param mac
	 * @throws PCPSApplicationException
	 */
	public void delete(MakeCardApproval mac) throws PCPSApplicationException;
}
